Free Monad In Scala